// 给 pm2 推送消息

const redis = require('redis');

// const url = 'redis://:!QW@3er45ty67ui8@47.93.2.156:6379';
const url = 'redis://127.0.0.1:6379'

const client = redis.createClient({
	url
})

const name = 'pm2-plus-gc-dev'
const public_id = 'igetget'
const ip = '192.168.70.146'



 client.publish('trigger:action:remote', JSON.stringify({
        action: 'trigger:action',
        name,
        action_name: 'km:heapdump',
        ip,
        public_id,
        from: 'iget'
    }))
// process.exit()
 return
// 获取 cpuprofile
client.publish('trigger:action:remote',JSON.stringify({
	action: 'trigger:action',
	name,
	action_name:'km:cpu:profiling:start',
	ip,
	public_id,
	from:'iget'
}))

setTimeout(() => {
	client.publish('trigger:action:remote',JSON.stringify({
		// 必须
		action: 'trigger:action',
		/// 必须吗进程名字
		name,
		// action 名字
		action_name:'km:cpu:profiling:stop',
		// 触发 ip
		ip,
		// public kye 用于验证身份和获取 secret
		public_id,
		// 必须参数,用于验证
		from:'iget'
	}))
	process.exit()
},3000)
return
// 控制远程进程重启
client.publish('trigger:action:remote',JSON.stringify({
	// 默认出发 pm2 自身行为,
	action: 'trigger:pm2:action',
	// 被触发的进程名字
	parameters: {
		name
	},
	// pm2 自身方法. 如下 pm2 可执行命令
	method_name:'stop',
	// 被触发进程所在的机器 Ip 地址,可以分 ip 触发
	ip,
	// public key . 和 npm run link  中的 环境变量 PM2_PUBLIC_KEY 对应.
	public_id,
	// 默认校验值.必须带上.
	from:'iget'
}))


/* 可执行 pm2 命令

{
  'restart'        : {},
  'reload'         : {},
  'gracefulReload' : {},
  'reset'          : {},
  'scale'          : {},

  'install'        : { password_required : true },
  'uninstall'      : { password_required : true },
  'stop'           : { password_required : true },
  'delete'         : { password_required : true },
  'set'            : {},
  'multiset'       : {},
  'deepUpdate'     : { password_required : true },

  'pullAndRestart' : { password_optional : true },
  'forward'        : { password_optional : true },
  'backward'       : { password_optional : true },

  'startLogging'   : {},
  'stopLogging'    : {},

  'resetTransactionCache': {},
  'resetFileCache': {},

  // This is just for testing purproses
  'ping'           : { password_required : true }
  */
 


